import java.util.Scanner;
import java.util.*;
public class test3 {
    /*现有编号从 0 到 n - 1 的 n 个背包。给你两个下标从 0 开始的整数数组 capacity 和 rocks 。
    第 i 个背包最大可以装 capacity[i] 块石头，当前已经装了 rocks[i] 块石头。另给你一个整数 additionalRocks ，
    表示你可以放置的额外石头数量，石头可以往 任意 背包中放置。
    请你将额外的石头放入一些背包中，并返回放置后装满石头的背包的 最大 数量。*/
    public static int check(int[] capacity,int[] rocks,int additionalRocks) {
        int n=capacity.length;
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=capacity[i]-rocks[i];
        }
        Arrays.sort(arr);
        int count=0;
        for(int i=0;i<n;i++){
            additionalRocks-=arr[i];
            count++;
            if(additionalRocks<=0){
                return count;
            }
        }
        return n;
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] capacity=new int[n];
        for(int i=0;i<n;i++){
            capacity[i]=sc.nextInt();
        }
        int[] rocks=new int[n];
        for(int i=0;i<n;i++){
            rocks[i]=sc.nextInt();
        }
        int additionalRocks=sc.nextInt();
        int resultcount=check(capacity,rocks,additionalRocks);
        System.out.println(additionalRocks);
        sc.close();
    }
}
